#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QSize>
#include <QAction>
#include <QToolButton>
#include <QIcon>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    // renew
    // 普通按钮(无check属性)
    ui->NormalBtn->setText("普通按钮");
    ui->NormalBtn->setIcon(QIcon(":/aiming.png"));
    ui->NormalBtn->setIconSize(QSize(25, 25));
    connect(ui->NormalBtn, &QPushButton::clicked, this, [=]()
    {
       qDebug() << "普通按钮被按下了...";
    });

    // act按钮，根据信号改变相关信息
    QAction* actBtn = new QAction(QIcon(":/all-application.png"), "application");
    ui->actionBtn->setDefaultAction(actBtn);
    connect(ui->actionBtn, &QToolButton::triggered, this, [=](QAction* act)
    {
        act->setText("我是修改后的图标");
        act->setIcon(QIcon(":/aiming.png"));
    });
    // 将工具按钮的显示样式设置为图标下文本的模式
    ui->actionBtn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); // 文本信息置于图标下

    ui->arrowBtn->setArrowType(Qt::UpArrow); // 向上箭头
    ui->arrowBtn->setText("向上箭头");

    // Check按钮
    ui->CheckBtn->setCheckable(true);
    connect(ui->CheckBtn, &QPushButton::toggled, this, [=](bool status)
    {
        qDebug() << "拥有Check属性的普通按钮被按下了... 当前状态为:" << status;
    });

    // menu按钮
    // 关联菜单
    ui->MenuBtn->setText("选择要使用的语言");
    QMenu* menu = new QMenu;
    QAction* act = menu->addAction("C语言");
    menu->addAction("C语言");
    menu->addAction("C++");
    menu->addAction("Java");
    menu->addAction("Python");
    ui->MenuBtn->setMenu(menu);
    connect(act, &QAction::triggered, this, [=]
    {
       qDebug() << "您选择了c语言";
    });

    ui->popMenu->setMenu(menu);
    /*
      弹出菜单的三种方式：

     * 鼠标左击：默认情况下，左击 QToolButton 即可弹出菜单。可以使用 setPopupMode(QToolButton::InstantPopup) 来设置默认弹出方式。

     * 鼠标右击：右击 QToolButton 时弹出菜单，可以使用 setPopupMode(QToolButton::DelayedPopup) 设置为延迟弹出方式。

     * 鼠标中键：鼠标中键点击时弹出菜单，可以使用 setPopupMode(QToolButton::MenuButtonPopup) 设置为菜单按钮弹出方式。
    */
    ui->popMenu->setPopupMode(QToolButton::DelayedPopup); // 设置延时弹出
    connect(ui->popMenu, &QToolButton::clicked, this, [=]()
    {
       qDebug() << "popMenu按钮，被延时按下了...";
    });


}

MainWindow::~MainWindow()
{
    delete ui;
}

